/**
 * 
 */
package cn.com.gzheroli.core.beetlsql;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;

/**  
* @类名: DynamicDataSourceTransactionManager  
* @描述: TODO(这里用一句话描述这个类的作用)  
* @作者: 李长荣 lichang_20011@163.com  
* @日期: 2017年9月13日  下午10:47:34
*@version V1.0  
*    
*/
public class DynamicDataSourceTransactionManager  extends DataSourceTransactionManager {
	/**
	 * 只读事务到从库
	 * 读写事务到主库
	 */
	@Override
	protected void doBegin(Object transaction, TransactionDefinition definition) {
		boolean readOnly = definition.isReadOnly();
		if(readOnly){
			DynamicDataSource.useSlave();
		}else{
			DynamicDataSource.useMaster();
		}		
		super.doBegin(transaction, definition);
	}
	
	/**
	 * 清理本地线程的数据源
	 */
	@Override
	protected void doCleanupAfterCompletion(Object transaction) {
		super.doCleanupAfterCompletion(transaction);
		DynamicDataSource.clearDataSource();
	}
}
